home *** CD-ROM | disk | FTP | other *** search
/ EuroCD 3 / EuroCD 3.iso / Programming / Amos / AMOSList-0497 / AMOSLIST / littleexamples.lha / ConvGreyNew.s < prev    next >
Encoding:
Text File  |  1995-09-20  |  1.7 KB  |  106 lines

  1.     output    dh1:ConvGrey.o
  2.  
  3.     IncDir    "dh1:Assembler/"
  4.     Include    "AMOS/|AMOSPro_Includes.s"
  5.  
  6. cnvgrey    movem.l    d0-d7/a0-a6,-(sp)
  7.     move.l    (a3)+,d6    ;Bytes
  8.     subq.l    #1,d6
  9.     
  10.     move.l    (a3)+,a5    ;Targetscreen
  11.     move.l    a3,-(sp)
  12.     move.l    (a5)+,a0
  13.     move.l    (a5)+,a1
  14.     move.l    (a5)+,a2
  15.     move.l    (a5)+,a3
  16.     lea    .tempp+4*4(pc),a5
  17.     movem.l    a0-a3,-(a5)
  18.     movem.l    (sp)+,a3
  19.     move.l    (a3)+,a4    ;Startscreen
  20.     moveq.l    #31,d7
  21.     lea    EcPal-4(a4),a0
  22.     lea    .grey(pc),a1
  23. .palmak    moveq.l    #0,d0
  24.     move.w    (a0)+,d0
  25.     move.w    d0,d1
  26.     move.w    d0,d2
  27.     and.w    #$F00,d0
  28.     and.w    #$0F0,d1
  29.     and.w    #$00F,d2
  30.     lsr.w    #8,d0
  31.     lsr.w    #4,d1
  32.     add.w    d2,d0
  33.     add.w    d1,d0
  34.     cmp.w    #47,d0
  35.     beq.s    .noadd
  36.     addq.w    #1,d0
  37. .noadd    divu    #3,d0
  38.     move.b    d0,(a1)+
  39.     dbra    d7,.palmak
  40.     move.l    (a4)+,a0
  41.     move.l    (a4)+,a1
  42.     move.l    (a4)+,a2
  43.     move.l    (a4)+,a3
  44.     move.l    (a4)+,a4
  45. .mloop    lea    .chkbuf+8(pc),a6
  46.     move.b    (a0)+,d4
  47.     move.b    (a1)+,d3
  48.     move.b    (a2)+,d2
  49.     move.b    (a3)+,d1
  50.     move.b    (a4)+,d0
  51.     movem.l    a0-a4,-(sp)
  52.     REPT    8
  53.     moveq.l    #0,d5
  54.     lsr.w    #1,d0
  55.     addx.w    d5,d5
  56.     lsr.w    #1,d1
  57.     addx.w    d5,d5
  58.     lsr.w    #1,d2
  59.     addx.w    d5,d5
  60.     lsr.w    #1,d3
  61.     addx.w    d5,d5
  62.     lsr.w    #1,d4
  63.     addx.w    d5,d5
  64.     move.b    d5,-(a6)
  65.     ENDR
  66.     lea    .chkbuf(pc),a0
  67.     lea    .newbuf(pc),a1
  68.     lea    .grey(pc),a2
  69.     moveq.l    #0,d0
  70.     moveq.l    #0,d1
  71.     REPT    4
  72.     move.b    (a0)+,d0
  73.     move.b    (a2,d0.w),(a1)+
  74.     move.b    (a0)+,d1
  75.     move.b    (a2,d1.w),(a1)+
  76.     ENDR
  77.  
  78.     lea    .newbuf(pc),a6
  79.     REPT    8
  80.     move.b    (a6)+,d5
  81.     lsl.w    #4,d5    
  82.     add.b    d5,d5
  83.     addx.w    d0,d0
  84.     add.b    d5,d5
  85.     addx.w    d1,d1
  86.     add.b    d5,d5
  87.     addx.w    d2,d2
  88.     add.b    d5,d5
  89.     addx.w    d3,d3
  90.     ENDR
  91.     movem.l    (a5)+,a0-a3
  92.     move.b    d3,(a0)+
  93.     move.b    d2,(a1)+
  94.     move.b    d1,(a2)+
  95.     move.b    d0,(a3)+
  96.     movem.l    a0-a3,-(a5)
  97.     movem.l    (sp)+,a0-a4
  98.     dbra    d6,.mloop
  99.     movem.l    (sp)+,d0-d7/a0-a6
  100.     lea    12(a3),a3
  101.     rts
  102. .chkbuf    ds.b    8
  103. .newbuf    ds.b    8
  104. .grey    ds.b    32
  105. .tempp    ds.l    4
  106.